# -*- coding:utf-8 -*-
# --author： jingfeng 
# time: 2018/12/8




import multiprocessing  # 分布式进程
import multiprocessing.managers  # 分布式进程管理器
import random
import time
import queue

task_queue = queue.Queue()
result_queue = queue.Queue()


def return_task():  # 返回任务队列
    return task_queue


def return_result():  # 返回结果队列
    return result_queue


class QueueManger(multiprocessing.managers.BaseManager):  # 继承，进程管理共享数据
    pass


if __name__ == '__main__':
    multiprocessing.freeze_support()  # 开启分布式支持
    QueueManger.register('get_task', callable=return_task)  # 注册两个函数，给客户端调用的作用
    QueueManger.register('get_result', callable=return_result)

    manger = QueueManger(address=('192.168.1.174', 65034),
                         authkey='000000'.encode('utf-8'))  # 初始化，创建一个管理器   authkey='czp0927'密码
    manger.start()  # 开启

    task, result = manger.get_task(), manger.get_result()  # 任务，结果   调用注册的那个名字

    # 压入数据
    for i in range(10000):
        print('task add data:', i)
        task.put(i)
    print('waitting*************')

    for i in range(1000):
        res = result.get(timeout=100)

        print('get data:', res)

    manger.shutdown()  # 关闭服务器
